// import QtQuick 2.12
// import QtQuick.Window 2.12

// Rectangle {

//     property alias text: content.text
//     property int margin: 15

//     id:self
//     z:4

//     color: "white"
//     radius: 4
//     width: content.width+20
//     height: content.height+20

//     anchors
//     {
//         top:getGlobalPosion(parent).y+parent.height+margin+height<Window.height?parent.bottom:undefined
//         bottom:getGlobalPosion(parent).y+parent.height+margin+height>=Window.height?parent.top:undefined
//         left:(width-parent.width)/2>getGlobalPosion(parent).x?parent.left:undefined
//         right:width+getGlobalPosion(parent).x>Window.width?parent.right:undefined

//         topMargin:margin
//         bottomMargin:margin
//     }

//     x:(width-parent.width)/2<=parent.x&&width+parent.x<=Window.width?(-width+parent.width)/2:0

//     Text {
//         id: content
//         text: qsTr("这是一段提示文字")
//         lineHeight: 1.2
//         anchors.centerIn: parent
//         font.family: m_FONT_FAMLIY
//     }

//     function getGlobalPosion(target = parent)
//     {
//         var targetX = 0
//         var targetY = 0

//         while(target!==null)
//         {
//             targetX+=target.x
//             targetY+=target.y

//             target = target.parent
//         }

//         return{
//             x:targetX,
//             y:targetY
//         }
//     }

// }
import QtQuick 2.12
import QtQuick.Window 2.12

Rectangle {
    property alias text: content.text
    property int margin: 15

    id: self
    z: 4

    color: "white"
    radius: 4
    width: content.width + 20
    height: content.height + 20

    // 在组件加载完成后计算位置，避免绑定循环
    Component.onCompleted: {
        var globalPos = getGlobalPosition(parent);
        var spaceBelow = globalPos.y + parent.height + margin + height < Window.height;
        var spaceRight = globalPos.x + width <= Window.width;

        // 垂直方向：优先放在下方，不够空间则放上方
        if (spaceBelow) {
            anchors.top = parent.bottom;
            anchors.topMargin = margin;
        } else {
            anchors.bottom = parent.top;
            anchors.bottomMargin = margin;
        }

        // 水平方向：尽量居中，超出屏幕则右对齐
        if (width > Window.width) {
            anchors.left = parent.left; // 如果比屏幕还宽，左对齐
        } else if (globalPos.x + width > Window.width) {
            anchors.right = parent.right; // 超出右边，右对齐
        } else {
            anchors.horizontalCenter = parent.horizontalCenter; // 默认居中
        }
    }

    Text {
        id: content
        text: qsTr("这是一段提示文字")
        lineHeight: 1.2
        anchors.centerIn: parent
        font.family: m_FONT_FAMLIY
    }

    // 计算全局坐标（避免递归依赖）
    function getGlobalPosition(target) {
        if (!target) return { x: 0, y: 0 };

        var x = 0, y = 0;
        var current = target;

        // 遍历父级，累加坐标
        while (current && current !== Window.contentItem) {
            x += current.x;
            y += current.y;
            current = current.parent;
        }

        return { x: x, y: y };
    }
}
